package deque;

import java.util.Comparator;

public class MaxArrayDeque<T> extends ArrayDeque<T> {
    private final Comparator<T> comparator;

    public MaxArrayDeque(Comparator<T> c) {
        //调用无参构造函数，意思是最终的函数的构造和父类构造相同，直接调用super，默认用父类
        super();
        this.comparator = c;
    }

    public T max() {
        if (this.isEmpty()) {
            return null;
        }

        T maxElement = this.get(0);
        for (T element : this) {
            if (comparator.compare(element, maxElement) > 0) {
                maxElement = element;
            }
        }
        return maxElement;
    }


    public T max(Comparator<T> c) {
        // 如果队列为空，返回 null
        if (this.isEmpty()) {
            return null;
        }

        // 获取队列的第一个元素作为初始最大值
        T maxElement = this.get(0);

        // 遍历队列中的所有元素，查找最大值
        for (T element : this) {
            if (c.compare(element, maxElement) > 0) {
                maxElement = element; // 更新最大值
            }
        }
        return maxElement; // 返回找到的最大值
    }

}
